package com.fjwt.gz.db.dto;

import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.experimental.Accessors;

/**
 * <p>
 * 会员奖品表
 * </p>
 *
 * @author shiyonghao
 * @since 2025-04-09
 */
@Data
@Accessors(chain = true)
public class FansAwardDTO {

    /**
     * 主键
     */
    private Long fansAwardId;

    /**
     * 用户ID
     */
    private Long fansId;

    /**
     * 应用appid
     */
    private String appId;

    /**
     * 奖品id
     */
    private Long awardId;

    /**
     * 奖品类型  0卡券（代金券） 1实物   2虚拟商品 
     */
    private Integer awardType;

    /**
     * 核销时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date writeTime;

    /**
     * 卡券三方id(微信/支付宝)
     */
    private String couponThirdId;

    /**
     * 过期时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date overTime;

    /**
     * 奖品状态
0：未使用  
1：已使用(券)/已领用(实物)/已发放(虚拟) 
2：已过期 
3：待激活(券)/待领用(实物) 
4：已失效 /发放失败(虚拟) 
5：已对账
6：发放中（针对虚拟商品--直冲）
     */
    private Integer state;

    /**
     * 核销商家商户号（用于核销卡券奖品，小邮付平台直接回调，旧平台需要导入微信对账单更新数据）
     */
    private String mchNo;

    /**
     * 描述信息
     */
    private String remark;

    /**
     * 机构ID（用于核销实物奖品/激活卡券）
     */
    private Integer activateAgentNo;

    /**
     * 机构ID1（用于核销实物奖品/激活卡券）
     */
    private String activateAgentNo1;

    /**
     * 机构ID2（用于核销实物奖品/激活卡券）
     */
    private String activateAgentNo2;

    /**
     * 机构ID3（用于核销实物奖品/激活卡券）
     */
    private String activateAgentNo3;

    /**
     * 机构ID4（用于核销实物奖品/激活卡券）
     */
    private String activateAgentNo4;

    /**
     * 机构客户经理用户id（用于核销实物奖品/激活卡券奖品）
     */
    private Long activateAgentEmployeeId;

    /**
     * 额外的附加数据（如：模版编号：{“templateNo”:"ACTE001"}）
     */
    private String extraJson;

    /**
     * 发放奖品机构ID
     */
    private String sendAgentNo;

    /**
     * 发放奖品机构ID1
     */
    private String sendAgentNo1;

    /**
     * 发放奖品机构ID2
     */
    private String sendAgentNo2;

    /**
     * 发放奖品机构ID3
     */
    private String sendAgentNo3;

    /**
     * 发放奖品机构ID4
     */
    private String sendAgentNo4;

    /**
     * 发放奖品用户user_id(商户、机构)
     */
    private Long sendAgentEmployeeId;

    /**
     * 发放奖品核销商家商户号
     */
    private String sendMchNo;

    /**
     * 活动公众号渠道码ID
     */
    private Integer activityChannelId;

    /**
     * 激活时间（对应的是用户真正领取时间）
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date activateTime;

    /**
     * 回执状态：0不需要回执 1回执待校验  2回执已校验
     */
    private Integer receiptState;

    /**
     * 回执内容json
     */
    private String receiptContent;

    /**
     * 回执校验时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date receiptVerifyTime;

    /**
     * 创建时间(即领取时间)
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createdAt;

    /**
     * 更新建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updatedAt;

    /** 活动Id */
    private Long activityId;

    /** 用户昵称 */
    private String nickName;

    /** 手机号 */
    private String phone;

    /** 核销商家名称 */
    private String mchName;

    /** 奖品名称 */
    private String awardName;

    /** 核销时间-开始 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date writeTimeStart;

    /** 核销时间-结束 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date writeTimeEnd;

    /** 过期时间-开始 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date overTimeStart;

    /** 过期时间-结束 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date overTimeEnd;

    /** 机构号集合 */
    private List<String> agentNoList;

    /**
     * 活动模板ID
     */
    private String activityTemplateNo;

    /**
     * 活动奖品ID
     */
    private Long activityAwardId;

    private String agentNo;

    private List<String> agentNos;
}
